{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain_openai import ChatOpenAI\n",
    "\n",
    "from dotenv import load_dotenv\n",
    "\n",
    "load_dotenv()\n",
    "\n",
    "# Initialize the language model\n",
    "llm = ChatOpenAI(model=\"qwen-max\", temperature=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "提示工程是指设计和优化输入给AI模型的提示语，以引导模型生成更准确、有用或符合预期的输出。\n"
     ]
    }
   ],
   "source": [
    "basic_prompt = \"用一句话解释提示工程的概念。\"\n",
    "\n",
    "print(llm.invoke(basic_prompt).content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "提示工程（Prompt Engineering）是指设计和优化用于与人工智能系统，尤其是大型语言模型交互的输入提示的过程。它涉及到精心构造问题或指令，以引导AI生成更加准确、有用或创意性的回答。随着AI技术的发展，特别是基于Transformer架构的语言模型如GPT系列的兴起，如何有效地与这些模型沟通变得尤为重要。\n",
      "\n",
      "### 提示工程的重要性\n",
      "\n",
      "1. **提高输出质量**：通过优化提示语句，可以显著改善AI系统的响应质量，使得答案更加贴近用户需求。\n",
      "2. **增强用户体验**：良好的提示设计能够帮助用户更轻松地获得所需信息，从而提升整体使用体验。\n",
      "3. **促进创新应用**：探索不同类型的提示方式有助于发现新的应用场景，推动AI技术在更多领域的落地实施。\n",
      "\n",
      "### 三个主要优点\n",
      "\n",
      "- **精准控制内容生成**：通过巧妙设计提示词，开发者能够更好地指导AI按照预期的方向生成内容，无论是风格、格式还是具体内容方面。\n",
      "- **降低成本提高效率**：有效的提示工程减少了不必要的迭代次数，加快了开发流程；同时，也能降低对复杂后处理的需求，节省资源。\n",
      "- **扩大适用范围**：优秀的提示策略不仅限于特定任务或领域内有效，它们往往具有一定的通用性，可以被应用于解决相似性质的问题上，进而拓展了AI解决方案的应用边界。\n",
      "\n",
      "总之，提示工程是连接人类意图与机器智能之间的重要桥梁之一，在当今快速发展的AI时代扮演着越来越关键的角色。\n"
     ]
    }
   ],
   "source": [
    "from langchain_core.prompts import PromptTemplate\n",
    "\n",
    "structured_prompt = PromptTemplate(\n",
    "    input_variables=[\"topic\"],\n",
    "    template=\"提供{topic}的定义，解释其重要性，并列出三个主​​要优点。\",\n",
    ")\n",
    "\n",
    "chain = structured_prompt | llm  # Combine the prompt template with the language model\n",
    "input_variables = {\"topic\": \"提示工程\"}  # Define the input variables\n",
    "output = chain.invoke(\n",
    "    input_variables\n",
    ").content  # Invoke the chain with the input variables\n",
    "print(output)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "提示 1:\n",
      "列举人工智能在医疗保健领域的 3 个应用。\n",
      "\n",
      "AI回复:\n",
      "人工智能在医疗保健领域的应用正在快速发展，为提高医疗服务的质量和效率提供了新的可能性。以下是人工智能在该领域中的三个重要应用：\n",
      "\n",
      "1. **辅助诊断**：通过分析医学影像（如X光片、CT扫描或MRI图像），AI能够帮助医生更快速准确地识别疾病迹象。例如，在肺癌早期检测中，AI可以识别肺部结节，并评估其恶性概率；在眼科领域，AI技术也被用于糖尿病视网膜病变的自动筛查。\n",
      "\n",
      "2. **个性化治疗方案推荐**：基于患者的基因信息、病史及生活习惯等数据，AI算法能够预测不同治疗方法对特定个体的有效性，从而支持医生制定更加个性化的治疗计划。这种精准医疗方法不仅有助于提高治疗成功率，还能减少不必要的药物副作用。\n",
      "\n",
      "3. **健康管理与远程监护**：利用可穿戴设备收集用户的生理参数（如心率、血压等），并通过AI技术进行分析处理，可以帮助人们更好地了解自己的健康状况并及时发现潜在问题。此外，在慢性病管理方面，AI系统还可以根据患者的具体情况提供饮食建议、运动指导等服务，促进疾病的长期控制与康复。\n",
      "\n",
      "这些只是AI在医疗保健领域众多应用场景的一部分，随着技术的进步，未来还将出现更多创新性的解决方案来改善人类的健康水平。\n",
      "--------------------------------------------------\n",
      "\n",
      "提示 2:\n",
      "用 3 个具体例子解释人工智能如何彻底改变医疗保健。\n",
      "\n",
      "AI回复:\n",
      "人工智能（AI）在医疗保健领域的应用正在逐步改变我们对健康管理和疾病治疗的理解与实践。以下是三个具体的例子，展示了AI如何彻底改变医疗保健：\n",
      "\n",
      "1. **精准医疗**：通过分析大量的遗传信息、生活习惯以及环境因素等数据，AI能够帮助医生为患者提供更加个性化的治疗方案。例如，在癌症治疗中，基于患者的基因组信息，AI可以预测哪些药物最有可能有效，从而提高治疗的成功率并减少不必要的副作用。这种个性化的方法不仅提高了疗效，也使得医疗服务变得更加高效和人性化。\n",
      "\n",
      "2. **辅助诊断**：利用深度学习技术，AI能够在医学影像分析方面达到甚至超越人类专家的水平。比如，在肺部CT扫描图像中识别早期肺癌病灶，或是在眼底照片上检测糖尿病视网膜病变的迹象。这些工具极大地加快了诊断过程，并且有助于发现那些肉眼难以察觉的问题，让患者能够更早接受治疗。此外，AI还被应用于心电图分析、皮肤癌筛查等多个领域，显示出巨大的潜力。\n",
      "\n",
      "3. **健康管理与预防**：随着可穿戴设备和移动应用程序的发展，人们现在可以轻松地收集自己的生理参数（如心跳、血压等）。结合AI算法，这些数据可以用来监测个人健康状况的变化趋势，提前预警潜在的健康风险。例如，某些智能手表已经具备了自动检测异常心律的功能，对于心脏病患者来说尤为重要。同时，基于用户的生活习惯和偏好，AI还可以提供建议来改善生活方式，促进整体健康。\n",
      "\n",
      "总之，通过提高诊断准确性、实现个性化治疗及加强日常健康管理等方面的作用，人工智能正深刻地影响着医疗行业，使得医疗服务更加高效、精确和个人化。随着技术的进步，未来AI在医疗保健中的作用将更加广泛和深入。\n",
      "--------------------------------------------------\n",
      "\n",
      "提示 3:\n",
      "你是一名医生。描述人工智能改善你在医院日常工作的 3 种方式。\n",
      "\n",
      "AI回复:\n",
      "作为一名医生，人工智能（AI）在医院日常工作中扮演着越来越重要的角色，它通过多种方式帮助提高工作效率和服务质量。以下是三种具体的方式：\n",
      "\n",
      "1. **辅助诊断与治疗决策**：人工智能可以通过分析大量的医学文献、病历数据以及最新的研究成果来提供辅助诊断服务。例如，基于深度学习的图像识别技术可以帮助放射科医生更准确地解读X光片、CT扫描或MRI图像，发现微小的异常情况；对于一些罕见疾病或是复杂病症，AI能够快速比对全球范围内的案例资料，为临床医生提供可能的诊断方向和治疗建议。此外，在制定个性化治疗方案时，AI也能够根据患者的具体病情及过往病例信息推荐最适合的药物组合或手术方法。\n",
      "\n",
      "2. **优化患者管理与流程自动化**：利用自然语言处理(NLP)等技术，AI可以自动提取并整理电子健康记录(EHRs)中的关键信息，如症状描述、检查结果等，从而减轻医护人员录入数据的工作负担，并确保信息录入的准确性。同时，智能排班系统可以根据每位医务人员的专业技能、工作量等因素合理安排值班表，保证医疗服务连续性的同时避免过度劳累。另外，AI还可以用于预测病人流量高峰期，协助医院管理层做出更加合理的资源配置决定，比如调整门诊开放时间或者增加急诊部门的人手配备。\n",
      "\n",
      "3. **增强医患沟通体验**：虚拟助手或聊天机器人等形式的人工智能工具可以作为医生与患者之间的桥梁，24/7在线回答常见问题、预约挂号、提醒复诊日期等，让患者感受到更加便捷高效的服务。特别是在慢性病管理和家庭护理领域，AI应用程序能够持续监测患者的生理指标变化，并及时向医生报告任何潜在风险，促进远程医疗的发展。此外，这些平台还能收集用户反馈，帮助医疗机构不断改进服务质量。\n",
      "\n",
      "总之，通过上述这些应用，人工智能不仅提高了医疗服务效率，还提升了诊疗精准度和个人化水平，最终受益的是广大患者群体。\n",
      "--------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "prompts = [\n",
    "    \"列举人工智能在医疗保健领域的 3 个应用。\",\n",
    "    \"用 3 个具体例子解释人工智能如何彻底改变医疗保健。\",\n",
    "    \"你是一名医生。描述人工智能改善你在医院日常工作的 3 种方式。\",\n",
    "]\n",
    "\n",
    "for i, prompt in enumerate(prompts, 1):\n",
    "    print(f\"\\n提示 {i}:\")\n",
    "    print(prompt)\n",
    "    print(\"\\nAI回复:\")\n",
    "    print(llm.invoke(prompt).content)\n",
    "    print(\"-\" * 50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "该陈述不正确。法国的首都是巴黎，而不是伦敦。伦敦是英国的首都。\n"
     ]
    }
   ],
   "source": [
    "fact_check_prompt = PromptTemplate(\n",
    "    input_variables=[\"statement\"],\n",
    "    template=\"\"\"评估以下陈述的事实准确性。如果不正确，请提供正确的信息：\n",
    "    陈述: {statement}\n",
    "    评估:\"\"\",\n",
    ")\n",
    "\n",
    "chain = fact_check_prompt | llm\n",
    "print(chain.invoke(\"法国的首都是伦敦。\").content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "要解决这个问题，我们可以使用复利公式来计算。复利公式是：\n",
       "\n",
       "\\[ A = P(1 + r)^n \\]\n",
       "\n",
       "其中:\n",
       "- \\(A\\) 是未来值\n",
       "- \\(P\\) 是本金（初始投资金额）\n",
       "- \\(r\\) 是年利率（以小数形式表示）\n",
       "- \\(n\\) 是时间（年）\n",
       "\n",
       "根据题目给出的信息：\n",
       "- 本金 \\(P = 1000\\) 元\n",
       "- 年利率 \\(r = 5\\% = 0.05\\)（将百分比转换为小数）\n",
       "- 时间 \\(n = 5\\) 年\n",
       "\n",
       "步骤 1) 将给定的数值代入复利公式中:\n",
       "\n",
       "\\[ A = 1000(1 + 0.05)^5 \\]\n",
       "\n",
       "接下来，我们来逐步计算这个表达式的值。\n",
       "\n",
       "步骤 2) 计算括号内的和:\n",
       "\n",
       "\\[ 1 + 0.05 = 1.05 \\]\n",
       "\n",
       "所以，现在公式变为:\n",
       "\n",
       "\\[ A = 1000 * (1.05)^5 \\]\n",
       "\n",
       "步骤 3) 接下来需要计算 \\(1.05^5\\):\n",
       "\n",
       "\\[ 1.05^5 ≈ 1.2762815625 \\] （这里的结果是通过计算器得到的近似值）\n",
       "\n",
       "因此，现在我们的公式变成了:\n",
       "\n",
       "\\[ A ≈ 1000 * 1.2762815625 \\]\n",
       "\n",
       "步骤 4) 最后一步是完成乘法运算:\n",
       "\n",
       "\\[ A ≈ 1276.28 \\]\n",
       "\n",
       "综上所述，如果以每年复利计算年化利率 5%，投资 1000 元 5 年后的总额大约为 1276.28 元。这意味着在五年结束时，原始投资加上累积的利息总共会增长到约 1276.28 元。"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Markdown\n",
    "\n",
    "problem_solving_prompt = PromptTemplate(\n",
    "    input_variables=[\"problem\"],\n",
    "    template=\"\"\"逐步解决以下问题：\n",
    "    问题: {problem}\n",
    "    解决方案:\n",
    "    1)\"\"\"\n",
    ")\n",
    "\n",
    "chain = problem_solving_prompt | llm\n",
    "response = chain.invoke(\"以每年复利计算年化利率 5%，投资 1000 元 5 年的复利。\")\n",
    "Markdown(response.content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "prompt",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
